package com.ai.service.made;

import com.ai.common.CommonResponse;
import com.ai.entity.made.RegionBase;
import com.ai.entity.made.page.RegionPage;
import com.ai.entity.security.SysRole;
import com.ai.model.param.RegionInfoParam;
import com.ai.model.vo.RegionBaseVo;
import com.ai.model.vo.RegionVo;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.service.IService;

import java.util.List;
import java.util.Map;

/**
 * <p>
 *  服务类
 * </p>
 *
 * @author jiaok
 * @since 2023-07-24
 */
public interface IRegionBaseService extends IService<RegionBase> {

    CommonResponse getList();

    CommonResponse deleteRegion(String id);

    CommonResponse add(RegionBaseVo regionBaseVo);

    CommonResponse updateRegion(RegionBase regionBase);

    RegionBase getRegionBaseByCode(String regionManageCode);


    IPage<RegionBase> getPage(RegionPage page);

    CommonResponse getAppoint(String id);

    RegionBase getRegionByCameraId(Integer id);

    /**
     * 保存或更新区域基础详细信息
     * @param regionInfoParam
     * @return
     */
    boolean saveOrUpdateRegionInfo(RegionInfoParam regionInfoParam);

    /**
     * 强制删除正在使用的区域信息
     * @param id
     * @return
     */
    CommonResponse forceDelete(String id);

    /**
     * 获取指定区域下所管理的摄像头code列表
     * @param coalMineVoRegions 区域信息
     * @return 管理摄像头code
     */
    List<String> getManageCamera(List<RegionVo> coalMineVoRegions);

    /**
     * 获取当前用户所属组织下的组织列表
     * @return 组织列表
     */
    List<RegionBase> getBelowRegionList();

    /**
     * 获取当前用户所属组织及子组织
     * @param loginRegionBaseId 当前组织id
     * @return 下面的所有组织id
     */
    List<String> getBelowRegionIdList(String loginRegionBaseId);


    /**
     * 获取当前登录用户下的所有组织，并进行数据结构的封装
     * @return
     */
     List<Map<String, Object>> getTreeBelowRegionList();
}
